/**
 * 支持的React版本
 */
export type ReactVersion = '17' | '18' | number

/**
 * 目标环境类型
 */
export type EnvironmentType =
    | 'react'
    | 'react-ts'
    | 'react-lib'
    | 'react-ts-lib'
    | 'preact'
    | 'preact-ts'
    | 'preact-lib'
    | 'preact-ts-lib'
    | 'h5'
    | 'h5-ts'
    | 'h5-lib'
    | 'h5-ts-lib'
    | 'node'
    | 'node-ts'

/**
 * 预设配置选项
 */
export interface BabelPresetOptions {
    /** 项目环境类型 */
    type?: EnvironmentType
    /** 目标环境配置 */
    targets?: 'es5' | 'es6' | 'node' | string | string[] | Record<string, string>
    /** 模块类型 */
    modules?: 'amd' | 'umd' | 'systemjs' | 'commonjs' | 'cjs' | 'esm' | false | 'auto'
    /** React版本 */
    reactVersion?: ReactVersion
    /** JSX导入源 */
    jsxImportSource?: string
    /** 是否为开发环境 */
    development?: boolean
    /** 显式控制是否使用transform-runtime插件 */
    useTransformRuntime?: boolean
}

/**
 * 预设环境配置
 */
export interface PresetEnvConfig {
    modules: BabelPresetOptions['modules']
    useBuiltIns?: 'usage' | 'entry' | false
    corejs?: 3
    targets: BabelPresetOptions['targets'] | string | string[] | Record<string, string>
}

/**
 * JSX配置
 */
export interface JsxConfig {
    runtime: 'automatic' | 'classic'
    importSource?: string
    development: boolean
}
